package com.example.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.Date;

/**
 * 用户报名记录响应DTO
 * 用于返回用户的报名历史记录
 */
@Data
@Schema(description = "用户报名记录响应数据传输对象")
public class UserRegistrationResponseDTO {

    @Schema(description = "报名记录ID", example = "3001")
    private Long registrationId;

    @Schema(description = "讲座ID", example = "2001")
    private Long lectureId;

    @Schema(description = "讲座标题", example = "Java并发编程实战")
    private String lectureTitle;

    @Schema(description = "主讲人", example = "张教授")
    private String lecturer;

    @Schema(description = "讲座开始时间", example = "2025-08-25 14:00:00")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    @Schema(description = "讲座结束时间", example = "2025-08-25 16:00:00")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    @Schema(description = "地点", example = "图书馆多功能厅")
    private String location;

    @Schema(description = "报名时间", example = "2025-08-23 10:00:00")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date registeredTime;

    @Schema(description = "签到时间", example = "2025-08-25 13:55:00")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date signTime;

    @Schema(description = "报名状态", example = "0")
    private Integer registrationStatus;

    @Schema(description = "报名状态文本", example = "待签到")
    private String registrationStatusText;

    @Schema(description = "是否可以取消", example = "true")
    private Boolean canCancel;

    @Schema(description = "讲座类型", example = "技术分享")
    private String lectureType;
}